package com.coolingme.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.coolingme.domain.entity.SecurityUser;
import com.coolingme.domain.entity.User;
import com.coolingme.domain.vo.PageInfoVo;
import com.coolingme.domain.vo.UserVo;

import java.util.Set;

public interface UserService extends IService<User> {

	/**
	 * 获取用户对应的角色集合<br>
	 * 从redis中获取，若不存在，先从mysql查询再放入redis
	 *
	 * @param securityUser SecurityUser
	 * @return 角色集合
	 */
	Set<String> getRoles(SecurityUser securityUser);

	/**
	 * 根据角色集合获取对应的全部请求权限集合
	 *
	 * @param roles 角色集合
	 * @return 请求路径集合
	 */
	Set<String> getPermissionURIs(Set<String> roles);

	/**
	 * 根据角色集合和页面路径获取对应的全部请求权限集合
	 *
	 * @param roles      角色集合
	 * @param refererUri 页面路径
	 * @return 请求路径集合
	 */
	Set<String> getPermissionURIs(Set<String> roles, String refererUri);

	/**
	 * 查询用户信息分页列表
	 *
	 * @param userName 用户名
	 * @param pageNum  当前页索引
	 * @param pageSize 当前页大小
	 * @return UserVo 用户分页信息
	 */
	PageInfoVo<UserVo> selectPageInfo(String userName, Integer pageNum, Integer pageSize);

	/**
	 * 插入
	 */
	void insert(User user);

}
